//
//  CMExt.swift
//  covermedia
//
//  Created by travel on 2016/11/8.
//  Copyright © 2016年 covermedia. All rights reserved.
//

import Foundation

/// 扩展点protocol：作为扩展和访问点
public protocol CMExtPoint {
    associatedtype DT
    
    /// 访问 扩展功能
    var cm: DT { get }
}

/// 扩展的protocol：用于扩展具体的功能
public protocol CMExt {
    associatedtype DT
    
    /// 访问原来的value
    var v: DT { get }
}

/// 扩展点基础实现:
public final class CMBase<T>: CMExt {
    public typealias DT = T
    public let v: T
    
    public init(v: T) {
        self.v = v
    }
}
